package tests;

import java.util.List;

import aplicacion.modelo.PuntajeMaximo;
import aplicacion.modelo.TipoPuntaje;
import junit.framework.TestCase;

public class PuntajeMaximoTest extends TestCase{
	
	protected void setUp() throws Exception {
		super.setUp();		
	}
		
	public void testInsetarPrimero(){
		List<TipoPuntaje> auxListaPuntaje=PuntajeMaximo.getInstance().getListaPuntajeMaximo();
		TipoPuntaje primerRecord=auxListaPuntaje.get(0);
		int nuevoPuntaje=primerRecord.getPuntos()+1;	
		PuntajeMaximo.getInstance().agregar(nuevoPuntaje,"PRIMEROSEGUNDO");
		primerRecord=auxListaPuntaje.get(0);
		assertEquals(nuevoPuntaje, primerRecord.getPuntos());
	}
	
	public void testInsetarConPuntosIgualQueElPrimero(){
		List<TipoPuntaje> auxListaPuntaje=PuntajeMaximo.getInstance().getListaPuntajeMaximo();
		TipoPuntaje primerRecord=auxListaPuntaje.get(0);
		int nuevoPuntaje=primerRecord.getPuntos()+1;		
		PuntajeMaximo.getInstance().agregar(nuevoPuntaje,"PRIMERO");		
		PuntajeMaximo.getInstance().agregar(nuevoPuntaje,"SEGUNDO");
		primerRecord= auxListaPuntaje.get(0);
		TipoPuntaje segundoRecord= auxListaPuntaje.get(0);
		segundoRecord= auxListaPuntaje.get(1);
		assertEquals("PRIMERO", primerRecord.getNombre());
		assertEquals("SEGUNDO", segundoRecord.getNombre());
	}
	
	public void testIngresarOnceElementosYElUltimoNoSeGuarda(){
		List<TipoPuntaje> auxListaPuntaje=PuntajeMaximo.getInstance().getListaPuntajeMaximo();
		TipoPuntaje primerRecord=auxListaPuntaje.get(0);
		int nuevoPuntaje=primerRecord.getPuntos()+2;
		int tope=auxListaPuntaje.size();		
		for(int i=0; i<tope;i++){			
			PuntajeMaximo.getInstance().agregar(nuevoPuntaje,("POS"+(i+1)));
		}		
		for(int i=0; (i<tope);i++){			
			assertEquals(nuevoPuntaje, ( auxListaPuntaje.get(i)).getPuntos());
		}
		auxListaPuntaje=PuntajeMaximo.getInstance().getListaPuntajeMaximo();		
		assertEquals(tope, auxListaPuntaje.size());		
		PuntajeMaximo.getInstance().agregar(nuevoPuntaje-2,"NOESTAENLISTA");
		assertEquals(nuevoPuntaje, ( auxListaPuntaje.get(tope-1)).getPuntos());		
	}
	
	public void testInsetarElementoQueNoSuperaNingunPuntaje(){
		List<TipoPuntaje> auxListaPuntaje=PuntajeMaximo.getInstance().getListaPuntajeMaximo();
		int tope=auxListaPuntaje.size();
		TipoPuntaje primerRecord;
		PuntajeMaximo.getInstance().agregar(0,"NODEBERIAESTARENLISTA");
		for(int i=0; (i<tope);i++){
			primerRecord = auxListaPuntaje.get(i);
			assertFalse(0==primerRecord.getNombre().compareTo("NODEBERIAESTARENLISTA"));
		}
	}
	
}
